﻿namespace GamFi.API.Application.Exceptions;

/// <inheritdoc />
public class UserException : Exception
{
     /// <summary>
    /// Пользователь с таким Email уже существует
    /// </summary>
    public string UserAlreadyExists { get; set; } = default!;

    /// <summary>
    /// Пользователь с указанным идентификатором не был найден
    /// </summary>
    public string UserByIdNotFound { get; set; } = default!;

    /// <summary>
    /// Пользователь с указанной почтой не был найден
    /// </summary>
    public string UserByEmailNotFound { get; set; } = default!;

    /// <summary>
    /// Пользователь с указанным никнеймом не был найден
    /// </summary>
    public string UserByUserNameNotFound { get; set; } = default!;

    /// <summary>
    /// Электронная почта уже подтверждена
    /// </summary>
    public string EmailAlreadyConfirmed { get; set; } = default!;

    /// <summary>
    /// Не удалось подтвердить электронную почту
    /// </summary>
    public string EmailConfirmationFailed { get; set; } = default!;

    /// <summary>
    /// Электронная почта не подтверждена
    /// </summary>
    public string EmailNotConfirmed { get; set; } = default!;

    /// <summary>
    /// Был введён неправильный пароль
    /// </summary>
    public string LoginFailed { get; set; } = default!;

    /// <summary>
    /// Не удалось зарегистрироваться
    /// </summary>
    public string RegistrationFailed { get; set; } = default!;

    /// <summary>
    /// Не удалось сбросить пароль
    /// </summary>
    public string ResetPasswordFailed { get; set; } = default!;

    /// <summary>
    /// Недостаточно прав для выполнения этого действия
    /// </summary>
    public string PermissionDenied { get; set; } = default!;

    /// <summary>
    /// Информация о пользователе с указанным идентификатором не была найдена
    /// </summary>
    public string UserInfoNotFound { get; set; } = default!;

    /// <summary>
    /// Не удалось присвоить роль
    /// </summary>
    public string RoleSettingFailed { get; set; } = default!;

    /// <inheritdoc />
    public UserException(string message) : base(message)
    {
    }
}